package com.lg.algorithm.collections.set;

import com.lg.domain.User;

import java.util.HashSet;

/**
 * hashset
 * add 增加，一个一个元素的增加
 * size 查询大小
 * remove 移除指定元素，但不能指定位置
 * contains 是否包含某元素
 *
 * 底层数据结构
 * value是一个常量的hashmap
 *
 * 可以指定大小么
 * 小于0，抛出异常。输入数的最小的2次幂，最小16。最大容量为2的30次方
 * 负载因子，默认0.75
 *
 * 大小有限制么，是多少
 * 最大容量为2的30次方
 *
 * 怎么扩容的，扩容的整个过程是怎么样的
 * https://www.processon.com/view/link/61190516e0b34d116b74d73e
 *
 * 减少会缩容么，会从数变成链表么
 * 不会缩容
 * 不会变成单链表
 *
 * collections.synchronizedSet
 * CopyOnWriteArraySet
 */
public class HashSetTest {
    public static void main(String[] args) {
        HashSet<String> strings = new HashSet<>();
        strings.add("a");
        strings.add("b");

//        Set<String> strings1 = Collections.synchronizedSet(strings);
//        CopyOnWriteArraySet<Object> objects = new CopyOnWriteArraySet<>();

        HashSet<User> users = new HashSet<>();
        for (int i = 0; i < 15; i++) {
            User user = new User();
            users.add(user);
        }

    }
}
